package com.shycloud.mido.member.api.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDateTime;

import lombok.Data;

/**
 * 合作商机构获取用户信息VO
 *
 * @author nianhua.jiang
 * @date 2021/10/29 14:56
 */
@Data
@ApiModel
public class PayDepositVO {

	/** 姓名 */
	@ApiModelProperty("姓名")
	private String name;
	/** 联系电话 */
	@ApiModelProperty("联系电话")
	private String phone;
	/** 押金订单编号 */
	@ApiModelProperty("押金订单编号")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long orderNoPerson;
	/** 服务费订单编号 */
	@ApiModelProperty("服务费订单编号")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Long orderNoOrg;
	/** 地址 */
	@ApiModelProperty("地址")
	private String address;
	/** 状态 */
	@ApiModelProperty("状态 0-未缴费 1-已缴费 2-待发货 3-未激活 4-已激活 5-已到期 6-已停用")
	private String status;
	/** 发货状态 */
	@ApiModelProperty("发货状态前端不要用，这个参数只用作后台判断")
	private String outStatus;
	/** 缴费时间 */
	@ApiModelProperty("缴费时间")
	private LocalDateTime payTime;
	/** 快递商 */
	@ApiModelProperty("快递商")
	private String courier;
	/** 快递编号 */
	@ApiModelProperty("快递编号")
	private String deliveryOrder;
	/** 快递编号 */
	@ApiModelProperty("硬件编码")
	private String udid;
	/** 激活账号 */
	@ApiModelProperty("激活账号")
	private String activeUsername;
	/** 开始时间 */
	@ApiModelProperty("开始时间")
	private LocalDateTime startTime;
	/** 结束时间 */
	@ApiModelProperty("结束时间")
	private LocalDateTime endTime;
	/** 开通时长天数 */
	@ApiModelProperty("开通时长（天）")
	private Integer duration;
	/** 硬件状态 发货状态 0-未发货 1-发货 2-作废（停用） */
	@ApiModelProperty("硬件状态 发货状态 0-未发货 1-发货 2-作废（停用） ")
	private String devStatus;
	/** 停用时间 */
	@ApiModelProperty("停用时间")
	private LocalDateTime stopTime;
	/** 缴费次数 */
	@ApiModelProperty("缴费次数")
	private Integer payTimes;
	/** 备注 */
	private String remark;

	public String getStatus() {

		//停用状态
		if ("2".equals(this.getDevStatus())) {
			return "6";
		}

		//待发货
		if ("0".equals(this.getOutStatus())) {
			return "2";
		}
		//未激活
		if ("1".equals(this.getOutStatus()) && this.getActiveUsername() == null) {
			return "3";
		}
		//已过期
		if (this.getStartTime() != null && LocalDateTime.now().isAfter(this.getStartTime().plusDays(this.duration))) {
			return "5";
		}
		//已激活
		if ("1".equals(this.getOutStatus()) && this.getActiveUsername() != null) {
			return "4";
		}

		return this.status;
	}

	public LocalDateTime getEndTime() {
		if (this.getStartTime() != null) {
			return this.getStartTime().plusDays(this.duration);
		} else {
			return null;
		}
	}

}
